package com.dp.future;

/**
 * @author 金鑫
 * Future构造很快，但是是一个虚拟的数据，需要装配RealData
 */
public class FutureData implements Data {

    //FutureData是RealData的包装
    protected RealData realData = null;
    protected boolean isReady = false;
    
    public synchronized void setRealData(RealData realData){
        if(isReady){
            return ;
        }
        this.realData = realData;
        isReady = true;
        notifyAll(); // RealData已经被注入，通知getContent();
    }

    @Override
    public synchronized String getContent() { //等待RealData构造完成
        while(!isReady){
            try {
                wait();  //一直等待，直到RealData被注入
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        return realData.content;
    }

}
